package com.fabriciojf.controller;

import com.fabriciojf.util.HashMapCS;
import com.fabriciojf.util.LogCS;
import com.fabriciojf.view.View;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * Esta classe é o controller do sistema de update do software calima.
 * Para que o update seja realizado com sucesso, e necessario que o arquivo
 * calima.zip esteja alocado na pasta download do calima publicado no tomcat
 * ex:
 * driver:\endereco real do tomcat\webapp\calima\download\calima.zip
 *
 * desta forma a aplicacao ira backupear, deletar a publicacao atual do calima e
 * descompatar o zip
 *
 * @author fabricio
 * @since 18/03/2010
 * @version 1.3 18/05/2010
 */
public class Controller {

    private LogCS log;
    private View view;           // atualiza a exibicao do status para o usuario

    /**
     * Inicia o processo do controller
     */
    public void executar() throws Exception {

        HashMapCS.getInstance().listarMapaPorChave();
        HashMapCS.getInstance().listarMapaPorObjeto();

        // abrirView();
    }

    /**
     * Assume o controle da visao atraves do actionlistener.
     * Carrega a visao e seta o action performed dela para o controle.
     * (modelo MVC)
     */
    private void abrirView() throws Exception {

        /**
         * instancia a visão
         */
        view = new View();
        view.setVisible(true);
        view.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                try {
                    controlActionPerformed(e);
                } catch (Exception ex) {
                    Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        });
    }


    /**
     * Capta e direciona as ações da visão para que o controle da aplicação
     * esteja realmente no controller
     */
    private void controlActionPerformed(ActionEvent e) throws Exception {

        if (e.getActionCommand().equals("CMD_LOG")) {
            // mostra o log no textarea da visao
            view.setLog("\nConteúdo do Arquivo de Log\n\n");
            view.setLog(log.getText());
        } else if (e.getActionCommand().equals("CMD_LIMPARLOG")) {
            // limpa o arquivo de log
            log.clean();
        } 
    }

}


